package com.ljj;

import com.ljj.config.AppConfig;
import com.ljj.task.TimePrintingTask;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.concurrent.ThreadPoolExecutor;

public class App {
    public static void main(String[] args) {
        // 启动 Spring 容器，加载配置类
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext(AppConfig.class);

        // 从容器中获取线程池
        ThreadPoolExecutor executor = context.getBean(ThreadPoolExecutor.class);

        // 创建一个任务：打印30秒的时间
        TimePrintingTask task = new TimePrintingTask(30);

        // 提交任务到线程池
        executor.submit(task);

        System.out.println("⏰ 已提交任务到线程池，正在执行...");

        // 可以继续提交其他任务...
        // executor.submit(new TimePrintingTask(10));

        // 主线程不立即退出（否则程序结束）
        // 让主线程等待一段时间，观察任务执行
        try {
            Thread.sleep(35_000); // 等待35秒让任务完成
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 关闭 Spring 容器（也会关闭线程池）
        context.close();
        System.out.println("🔚 Spring 容器已关闭。");
    }
}
